SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TCMOVI_BANC_I05]
/*---------------------------------------------------------*/    
/*---Empresa              : OFISIS S.A.                  --*/    
/*---Cliente              : OFISIS S.A.                  --*/    
/*---Sistema              : Tesoreria                    --*/    
/*---M¸dulo               : Empresa                      --*/    
/*---Programa             : Procedimiento para generar   --*/    
/*---                       Cheques para Trabajadores    --*/          
/*---Script               : ttproc_i.sql                 --*/    
/*---Nombre SP            : SP_TCMOVI_BANC_I05           --*/    
/*---Desarrollado por     : Javier Flores A.             --*/    
/*---Fecha Creaci¸n       : 29/10/2003                   --*/    
/*---Base Datos           : Microsoft Sql Server         --*/    
/*---Versi¸n              : 8.0                          --*/    
/*---Invoca a SP          :                              --*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 1 por     :Maribel Julca R.				--*/    
/*---Fecha Modificaci¸n   :Ingreso de los campos de CO_USUA_CREA Y CO_USUSA_MODI--*/     
/*---Detalle Modificaci¸n :                              --*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*---Modificado 2por     : Carlos Marquez E.    		--*/    
/*---Fecha Modificaci¸n   : 09/05/2006					--*/     
/*---Detalle Modificaci¸n : Incluir Unida como Pk, y contr-*/    
/*---						chequeras					---*/
    
/*---------------------------------------------------------*/    
/*---Comentarios                                         --*/    
/*---                                                    --*/    
/*---                                                    --*/    
/*---------------------------------------------------------*/    
/*---------------------------------------------------------*/    
/*--- Drop Proc SP_TCMOVI_BANC_I05                  --*/    
/*--- Grant Execute on SP_TCMOVI_BANC_I05 to public      --*/     
/*--- SP_TCMOVI_BANC_I05      --*/    
/*---------------------------------------------------------*/    
@ISCO_USUA_MODI  TD_VC_008_USUA,
@ISCO_UNID_TESO  TD_VC_003,
@ISCO_EMPR       TD_VC_002,        
@ISCO_UNID_PLAN  TD_VC_003,
@ISCO_BANC		 TD_VC_003,     
@ISNU_CNTA_BANC	 TD_VC_020,    
@ISAA_BNCO		 TD_VC_004,    
@ISMM_BNCO		 TD_VC_002,    
@IDFE_OPER		 TD_DT_001,     
@ISCO_TIPO_OPER  TD_VC_003,    
@ISCO_SUBR		 TD_VC_003,     
@INFA_TIPO_CAMB	 TD_NU_015_006,     
@ISTI_CORR_INEG	 TD_VC_001,    
@ISST_ASTO_RESU	 TD_VC_001,    
@ISTI_PLAN		 TD_VC_003,    
@ISDE_CPTO		 TD_VC_020,    
@ISCO_MONE_PLAN	 TD_VC_003,    
@ISCO_MONE_CNTA	 TD_VC_003,    
@ISCO_CPTO_FORM	 TD_VC_006,    
@INNU_ANNO		 TD_IN_001,    
@INNU_PERI		 TD_IN_001  
 As  
Declare    
    
   @CSCO_TRAB      TD_VC_020,    
   @CDFE_OPER      TD_DT_001,     
   @CNFA_TIPO_CAMB TD_NU_015_006,     
   @CSCO_TIPO_OPER TD_VC_003,    
   @CSCO_SUBR      TD_VC_003,    
   @CNNU_DATO_CALC TD_NU_016_004,    
   @CSNO_TRAB      TD_VC_200,    
   @CSCO_MONE      TD_VC_003,    
   @VNCO_NUEV_NUME TD_IN_001,     
   @VSCO_NUEV_CHAR TD_VC_008,    
   @VNNU_REGI      TD_IN_001,    
   @VNUL_CORR_EGRE TD_IN_001,    
   @VNUL_CORR_INEG TD_IN_001,    
   @VNUL_CORR_AJUS TD_IN_001,     
   @VSST_INTE_BACH TD_VC_001,    
   @VSTI_OPNI_CARG TD_VC_003,    
   @VSTI_OPNI_ABON TD_VC_003,    
   @VNFE_0001      TD_IN_001,    
   @VSNU_CHEQ      TD_VC_020,    
   @VSNU_ULTI_CHEQ TD_VC_020,    
   @VNNU_CHEQ      TD_IN_001,    
   @VSTI_ENTI      TD_VC_001,    
   @VSNU_CHEQ_ANTE TD_VC_020,    
   @VSCO_MONE_EXTR TD_VC_003,    
   @VSCO_MONE_NACI TD_VC_003,    
   @VSTI_CAMB_0002 TD_VC_001,    
   @VSTI_ORIG      TD_VC_001,    
   @VNIM_MOVI      TD_NU_016_004,    
   @OSNU_COMP_BANC TD_VC_008,    
   @ONNU_ERRO      TD_IN_001,    
   @VNAA_BNCO      TD_IN_001,    
   @VNMM_BNCO      TD_IN_001,    
   @VSCO_OPRC_CNTB TD_VC_003,    
   @VNNU_SECU      TD_IN_001, 
   @VNNU_SECU_CHEQ      TD_IN_001, 
   @VSST_CHEQ_UNID TD_VC_001 /* Control de chequeras por unidad */              
    
    
Begin Tran SP_TCMOVI_BANC_I05    
    
    
/** inserta en la cabecera de bancos **/    
    
     Select @VSST_INTE_BACH = ST_INTE_BACH,    
			@VSTI_OPNI_CARG = CO_TIPO_OPEG,     
            @VSTI_OPNI_ABON = CO_TIPO_OPER,     
            @VSCO_MONE_NACI = CO_MONE_DEFA,    
            @VSCO_MONE_EXTR = CO_MONE_EXTR,    
            @VSTI_CAMB_0002 = TI_CAMB,     
            @VSTI_ORIG      = TI_ORIG,
			@VSST_CHEQ_UNID = IsNull(ST_CHEQ_UNID,'N')    
     From   TMPARA_TESO     
     Where  CO_EMPR = @ISCO_EMPR    

    
Declare CU_TCMOVI_BANC_I05_1 Cursor For    
Select  CO_TRAB, NO_TRAB, NU_DATO_CALC, CO_MONE, FE_OPER, FA_TIPO_CAMB, CO_TIPO_OPER, CO_SUBR    
From #TWCHEQ_PLAN    
    
Open CU_TCMOVI_BANC_I05_1     
Fetch CU_TCMOVI_BANC_I05_1     
Into @CSCO_TRAB, @CSNO_TRAB, @CNNU_DATO_CALC, @CSCO_MONE, @CDFE_OPER, @CNFA_TIPO_CAMB, @CSCO_TIPO_OPER, @CSCO_SUBR    

Select @VNFE_0001  = @@FETCH_STATUS    

Select @VNNU_SECU = IsNull(Max(NU_SECU),0) + 1    
From  TDTRAB_PROC    
Where CO_EMPR = @ISCO_EMPR    
    
While (@VNFE_0001 = 0)    
Begin    
	If (@VNFE_0001 < 0)    
	Begin       
		Close CU_TCMOVI_BANC_I05_1    
		Deallocate CU_TCMOVI_BANC_I05_1    
		Return
	End      
	
	If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND     
	@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON    
	Begin      
		EXEC SP_TTULTI_ASTO_Q02 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_TESO, @ISCO_TIPO_OPER, @IDFE_OPER, 
@OSNU_COMP_BANC OUTPUT, @ONNU_ERRO OUTPUT     
	
		IF (@ONNU_ERRO != 0)    
		Begin    
			RAISERROR 20001 'FIN DE ARCHIVO'    
			ROLLBACK TRANSACTION SP_TCMOVI_BANC_I05            
			Close CU_TCMOVI_BANC_I05_1    
			Deallocate CU_TCMOVI_BANC_I05_1    
			RETURN    
		End    
	End    
	
	Else    
	Begin    
		Select @VSCO_NUEV_CHAR  = ISNULL(MAX(NU_COMP_BANC), '0')    
		From TCMOVI_BANC     
		Where CO_EMPR = @ISCO_EMPR     
		And   CO_BANC = @ISCO_BANC     
		And   NU_CNTA_BANC = @ISNU_CNTA_BANC     
		And   AA_BNCO = @ISAA_BNCO    
		And   MM_BNCO = @ISMM_BNCO     
		And   TI_MOVI_BANC = 'E'      
		And   NU_COMP_BANC LIKE '000%'    
		
		Select @VNCO_NUEV_NUME = Convert(Int , @VSCO_NUEV_CHAR) + 1    
		
		Select @VSCO_NUEV_CHAR = Convert(Char(8) , @VNCO_NUEV_NUME)    
		
		-- RELLENA DE CEROS HASTA 8 CARACTERES     
		Select @VSCO_NUEV_CHAR = ISNULL(REPLICATE('0',8- DATALENGTH(LTRIM(RTRIM(@VSCO_NUEV_CHAR)))),'') 
+LTRIM(RTRIM(@VSCO_NUEV_CHAR))    
		
		Select @OSNU_COMP_BANC = @VSCO_NUEV_CHAR     
		
		Select @VNUL_CORR_AJUS = 0    
		SELECT @VNUL_CORR_EGRE = @VNCO_NUEV_NUME     
	End    
	

  -- Numero de cheque que se genero antes --
  if @VSST_CHEQ_UNID = 'N'  --- Sin control Unidad por Chequera = Antes
	  Select @VSNU_ULTI_CHEQ = NU_ULTI_CHEQ,  
			 @VNNU_SECU_CHEQ = NU_SECU  
	  From   TTSTOC_CHEQ  
	  Where  CO_EMPR = @ISCO_EMPR    
	  And    CO_BANC = @ISCO_BANC    
	  And    NU_CNTA_BANC = @ISNU_CNTA_BANC    
	  And    SI_CHEQ_ACTU = 'S'     
	  And    TI_SITU = 'ACT'      
  Else
	  Select @VSNU_ULTI_CHEQ = NU_ULTI_CHEQ,  
			 @VNNU_SECU_CHEQ = NU_SECU  
	  From   TTSTOC_CHEQ  
	  Where  CO_EMPR = @ISCO_EMPR    
	  And    CO_BANC = @ISCO_BANC    
	  And    NU_CNTA_BANC = @ISNU_CNTA_BANC    
	  And    SI_CHEQ_ACTU = 'S'     
	  And    TI_SITU = 'ACT'      
	  And    CO_UNID_CONC = @ISCO_UNID_TESO

	Select @VSNU_CHEQ_ANTE = CONVERT(VARCHAR(15),CONVERT (int,@VSNU_ULTI_CHEQ ) + 1)    
	Select @VSNU_CHEQ = ISNULL(REPLICATE('0', 15- DATALENGTH(LTRIM(RTRIM(@VSNU_CHEQ_ANTE)))),'') 
+LTRIM(RTRIM(@VSNU_CHEQ_ANTE))        
	
	If @ISTI_PLAN = 'OBR'    
		Select @VSTI_ENTI = 'O'       
	Else    
		Select @VSTI_ENTI = 'E'    

	Select @VNIM_MOVI = Round(OFITESO.dbo.FN_TCFACT_CAMB_Q02(@ISCO_MONE_PLAN,     
			@ISCO_MONE_CNTA, @IDFE_OPER, @CNNU_DATO_CALC, @VSTI_CAMB_0002,     
			@VSTI_ORIG, 'S', @VSCO_MONE_NACI, @VSCO_MONE_EXTR, @INFA_TIPO_CAMB),2)    
	
	Insert Into TCMOVI_BANC(    
	CO_EMPR, CO_BANC, NU_CNTA_BANC, AA_BNCO, MM_BNCO, TI_MOVI_BANC, NU_COMP_BANC, CO_UNID_CONC, 
	FE_OPER, CO_TIPO_OPER, CO_SUBR, CO_TIPO_DOCU, NU_DOCU_BANC, FA_TIPO_CAMB, CO_BANC_CHEQ, NU_CHEQ,     
	IM_MOVI, FE_CHEQ,  CO_ENTR_REND, FE_DISP, FE_ENTR_CHEQ, FE_PROG_CHEQ, TI_ENTI, CO_ENTI, DE_NOMB_ORDE,     
	SI_SOLO_BANC, SI_OPER_CONC, AA_CONC, MM_CONC, DE_OBSE, ST_CONT, NU_PROC, TI_SITU,CO_USUA_CREA,    
	CO_USUA_MODI, CO_GRUP_CONC, NU_SOLI, NU_CHEQ_USAD)        
	Values (    
	@ISCO_EMPR, @ISCO_BANC, @ISNU_CNTA_BANC, @ISAA_BNCO, @ISMM_BNCO, 'E', @OSNU_COMP_BANC, @ISCO_UNID_TESO,    
	@IDFE_OPER, @ISCO_TIPO_OPER, @ISCO_SUBR, 'CHE', NULL, @INFA_TIPO_CAMB, NULL, @VSNU_CHEQ,    
	@VNIM_MOVI, @IDFE_OPER, NULL, NULL, NULL, NULL, @VSTI_ENTI, @CSCO_TRAB, substring(@CSNO_TRAB,1,100),     
	'N', 'N', NULL, NULL, @ISDE_CPTO, 'N', NULL, 'ACT', @ISCO_USUA_MODI, @ISCO_USUA_MODI, NULL, NULL, 
@VNNU_SECU_CHEQ)          
	
	If @@error <> 0    
	Begin    
		Rollback tran SP_TCMOVI_BANC_I05    
		Close CU_TCMOVI_BANC_I05_1    
		Deallocate CU_TCMOVI_BANC_I05_1    
		Return    
	End    
	
	-- Inserta a la tabla TDTRAB_PROC para grabar los empleados que se le ha girado un cheque --
	
	Insert into TDTRAB_PROC (    
	CO_EMPR, CO_UNID_CNTB, CO_TRAB, CO_PLAN, NU_ANNO, NU_PERI, CO_CPTO_FORM, NU_SECU, CO_MONE, IM_TRAB_CALC, CO_BANC, 
NU_CNTA_BANC,     
	NU_COMP_BACA, FE_OPER, FA_TIPO_CAMB, CO_TIPO_OPER, CO_SUBR, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI)   
 
	
	Values (@ISCO_EMPR, @ISCO_UNID_PLAN, @CSCO_TRAB, @ISTI_PLAN, @INNU_ANNO, @INNU_PERI, @ISCO_CPTO_FORM, @VNNU_SECU,     
	@CSCO_MONE, @CNNU_DATO_CALC, @ISCO_BANC, @ISNU_CNTA_BANC, @OSNU_COMP_BANC, @CDFE_OPER,     
	@CNFA_TIPO_CAMB, @CSCO_TIPO_OPER, @CSCO_SUBR, @ISCO_USUA_MODI, GETDATE(), @ISCO_USUA_MODI, GETDATE() )    
	
	If @@error <> 0    
	Begin    
		Rollback tran SP_TCMOVI_BANC_I05    
		Close CU_TCMOVI_BANC_I05_1    
		Deallocate CU_TCMOVI_BANC_I05_1    
		Return    
	End    
	
	
  If @VSST_CHEQ_UNID = 'N'  --- Sin control Unidad por Chequera = Antes   
	  Update TTSTOC_CHEQ    
	  Set	NU_ULTI_CHEQ = @VSNU_CHEQ , FE_ULTI_CHEQ = @IDFE_OPER,    
	  		FE_USUA_MODI = GETDATE(), CO_USUA_MODI = @ISCO_USUA_MODI    
	  Where CO_EMPR = @ISCO_EMPR      
	  and   CO_BANC = @ISCO_BANC     
	  and   NU_CNTA_BANC = @ISNU_CNTA_BANC     
	  and   SI_CHEQ_ACTU = 'S'    
  Else
	  Update TTSTOC_CHEQ    
	  Set	NU_ULTI_CHEQ = @VSNU_CHEQ , FE_ULTI_CHEQ = @IDFE_OPER,    
			FE_USUA_MODI = GETDATE(), CO_USUA_MODI = @ISCO_USUA_MODI    
	  Where CO_EMPR = @ISCO_EMPR      
	  and   CO_BANC = @ISCO_BANC     
	  and   NU_CNTA_BANC = @ISNU_CNTA_BANC     
	  and   SI_CHEQ_ACTU = 'S'
	  And   CO_UNID_CONC = @ISCO_UNID_TESO

	
	If @@error <> 0    
	Begin    
		Rollback tran SP_TCMOVI_BANC_I05    
		Close CU_TCMOVI_BANC_I05_1    
		Deallocate CU_TCMOVI_BANC_I05_1    
		Return    
	End    
	
	-- Actualizando el numero de cheque en la tabla temporal para los trabajadores --
	
	Update #TWCHEQ_PLAN Set NU_CHEQ = @VSNU_CHEQ, NU_COMP_BANC = @OSNU_COMP_BANC WHERE CURRENT OF CU_TCMOVI_BANC_I05_1    
 
	
	----------- Actualiza los Correlativos ------------------ 
	If @VSST_INTE_BACH = 'S' OR @ISST_ASTO_RESU = 'S' OR     
	@ISCO_TIPO_OPER = @VSTI_OPNI_CARG OR @ISCO_TIPO_OPER = @VSTI_OPNI_ABON    
	Begin        
	
		If @ISTI_CORR_INEG = 'N'    
		Begin    
			Select @VNUL_CORR_EGRE = UL_CORR_EGRE     
			From TMSABA_MENS    
			WHERE CO_EMPR = @ISCO_EMPR      
			AND   CO_BANC = @ISCO_BANC     
			AND   NU_CNTA_BANC = @ISNU_CNTA_BANC     
			AND   AA_BNCO = @ISAA_BNCO     
			AND   MM_BNCO = @ISMM_BNCO     
			
			Update TMSABA_MENS    
			Set  UL_CORR_EGRE = @VNUL_CORR_EGRE + 1 + @VNUL_CORR_AJUS, CO_USUA_MODI = @ISCO_USUA_MODI,     
			FE_USUA_MODI = GETDATE()    
			Where  CO_EMPR = @ISCO_EMPR     
			And    CO_BANC = @ISCO_BANC     
			And    NU_CNTA_BANC = @ISNU_CNTA_BANC     
			And AA_BNCO = @ISAA_BNCO     
			And    MM_BNCO = @ISMM_BNCO    
			
			If @@error <> 0    
			Begin    
				Rollback tran SP_TCMOVI_BANC_I05    
				Close CU_TCMOVI_BANC_I05_1    
				Deallocate CU_TCMOVI_BANC_I05_1    
				Return    
			End    
		End    
		Else    
		Begin    
			Select @VNUL_CORR_INEG = UL_CORR_INEG     
			From TMSABA_MENS    
			WHERE CO_EMPR = @ISCO_EMPR      
			AND   CO_BANC = @ISCO_BANC     
			AND   NU_CNTA_BANC = @ISNU_CNTA_BANC     
			AND   AA_BNCO = @ISAA_BNCO      
			AND   MM_BNCO = @ISMM_BNCO     
			
			Update TMSABA_MENS    
			Set  UL_CORR_INEG = @VNUL_CORR_INEG + 1 + @VNUL_CORR_AJUS, CO_USUA_MODI = @ISCO_USUA_MODI,    
			FE_USUA_MODI = GETDATE()    
			Where  CO_EMPR = @ISCO_EMPR     
			And    CO_BANC = @ISCO_BANC     
			And    NU_CNTA_BANC = @ISNU_CNTA_BANC     
			And    AA_BNCO = @ISAA_BNCO     
			And    MM_BNCO = @ISMM_BNCO    
			
			If @@error <> 0    
			Begin    
				Rollback tran SP_TCMOVI_BANC_I05    
				Close CU_TCMOVI_BANC_I05_1    
				Deallocate CU_TCMOVI_BANC_I05_1    
				Return    
			End    
		End    
	End    
	
	-- Generación Voucher Contable  --	
	If @VSST_INTE_BACH = 'N' AND @ISST_ASTO_RESU = 'N' AND     
	@ISCO_TIPO_OPER != @VSTI_OPNI_CARG AND @ISCO_TIPO_OPER != @VSTI_OPNI_ABON    
	Begin      
		Select @VNAA_BNCO = CONVERT(INT,@ISAA_BNCO)    
		Select @VNMM_BNCO = CONVERT(INT,@ISMM_BNCO)    
		
		EXEC SP_TTPROC_INTE_I26 @ISCO_EMPR, @ISCO_USUA_MODI, @ISCO_UNID_TESO, @ISCO_BANC, @ISNU_CNTA_BANC, '', 
@VNAA_BNCO, @VNMM_BNCO, @IDFE_OPER, @OSNU_COMP_BANC, 'S'    
		If @@error <> 0    
		Begin    
			Rollback tran SP_TCMOVI_BANC_I05    
			Close CU_TCMOVI_BANC_I05_1    
			Deallocate CU_TCMOVI_BANC_I05_1    
			Return    
		End    
	End    
	
	Select Distinct @VSCO_OPRC_CNTB = CO_OPRC_CNTB From TDTIPO_OPER Where CO_EMPR = @ISCO_EMPR And CO_TIPO_OPER = 
@ISCO_TIPO_OPER    
	
	Delete TTINTE_CNDE    
	Where CO_EMPR = @ISCO_EMPR    
	And NU_CNTB_EMPR = 1    
	And CO_UNID_CNTB = @ISCO_UNID_TESO    
	And CO_OPRC_CNTB = @VSCO_OPRC_CNTB    
	And NU_ANNO      = @VNAA_BNCO    
	And NU_MESE      = @VNMM_BNCO    
	And NU_ASTO      = @OSNU_COMP_BANC    
	
	Update  TCMOVI_BANC    
	Set ST_CONT = 'P',  
	CO_USUA_MODI = @ISCO_USUA_MODI,    
	FE_USUA_MODI = GETDATE()    
	Where CO_EMPR  = @ISCO_EMPR    
	And   CO_BANC = @ISCO_BANC    
	And   NU_CNTA_BANC = @ISNU_CNTA_BANC    
	And   AA_BNCO = @ISAA_BNCO    
	And   MM_BNCO = @ISMM_BNCO    
	And   TI_MOVI_BANC = 'E'    
	And   NU_COMP_BANC = @OSNU_COMP_BANC    
	
	Fetch  CU_TCMOVI_BANC_I05_1     
	Into @CSCO_TRAB, @CSNO_TRAB, @CNNU_DATO_CALC, @CSCO_MONE, @CDFE_OPER, @CNFA_TIPO_CAMB, @CSCO_TIPO_OPER, @CSCO_SUBR    
	
	Select @VNFE_0001 = @@FETCH_STATUS    
	
End    
    
Close CU_TCMOVI_BANC_I05_1    
Deallocate CU_TCMOVI_BANC_I05_1    


    
Commit Tran SP_TCMOVI_BANC_I05    
    
RETURN    
    
/*------------------------ Fin ------------------------------*/


GO
